﻿/*
 *  创建者：    
 *      zlk
 *  创建时间：
 *      2011-7-22
 *  文件说明：
 *      通用的验证控件，对本系统的业务进行验证，包括电话、工商局编码、营业执照号、商品条码、邮编、Email等。
 */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace Sunimage.Spjg.Common
{
    /// <summary>
    /// 自定义验证控件
    /// </summary>
    public class CustomValidation
    {
        /// <summary>
        /// 验证是否Email
        /// </summary>
        /// <param name="text">输入文本</param>
        /// <returns>是\否</returns>
        public static bool IsEmail(string inputText)
        {
            return Validate(inputText, "\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
        }

        /// <summary>
        /// 验证是否邮政编码
        /// </summary>
        /// <param name="text">输入文本</param>
        /// <returns>是\否</returns>
        public static bool IsPostCode(string inputText)
        {
            //6位的数字
            return Validate(inputText, "\\d{6}");
        }

        /// <summary>
        /// 验证是否商户营业执照号
        /// </summary>
        /// <param name="text">输入文本</param>
        /// <returns>是\否</returns>
        public static bool IsCommercerRegCode(string inputText)
        {
            //TODO:书写RegEx。目前还不知道营业执照号的规则，只知道是数字组成的字符串，标准长度为15位，老的为13位。
            if (string.IsNullOrEmpty(inputText.Trim()))
                return false;
            //if (inputText.Trim().Length < 8)
            //    return false;
            if (inputText.Trim().Length >= 16)
                return false;
            if (!IsNumberString(inputText))
                return false;
            return true;
        }

        /// <summary>
        /// 是否是有数字组成的字符串
        /// </summary>
        /// <param name="inputText"></param>
        /// <returns></returns>
        public static bool IsNumberString(string inputText)
        {
            string pattern = "^\\d*$";
            return Validate(inputText, pattern);
        }

        /// <summary>
        /// 是否生产企业条码
        /// </summary>
        /// <param name="code"></param>
        /// <returns></returns>
        public static bool IsEnterpriseCode(string code)
        {
            return IsNumberString(code);
        }

        /// <summary>
        /// 是否是商品条码
        /// </summary>
        /// <param name="code"></param>
        /// <returns></returns>
        public static bool IsProductBarcode(string code)
        {
            if (string.IsNullOrEmpty(code.Trim()))
                return false;
            if (code.Trim().Length < 8)
                return false;
            if (code.Trim().Length > 13)
                return false;
            if (!IsNumberString(code))
                return false;
            return true;
        }


        private static bool Validate(string inputText, string regExText)
        {
            return Regex.IsMatch(inputText, regExText);
        }


    }
}
